home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / cpphtp2 / code.jar / code / ch09 / fig09_09.txt < prev    next >
Text File  |  1998-02-27  |  2KB  |  84 lines

  1. 1   // Fig. 9.9: circle2.h
  2. 2   // Definition of class Circle
  3. 3   #ifndef CIRCLE2_H
  4. 4   #define CIRCLE2_H
  5. 5   
  6. 6   #include "point2.h"
  7. 7   
  8. 8   class Circle : public Point {
  9. 9      friend ostream &operator<<( ostream &, const Circle & );
  10. 10  public:
  11. 11     // default constructor
  12. 12     Circle( double r = 0.0, int x = 0, int y = 0 );
  13. 13     void setRadius( double );    // set radius
  14. 14     double getRadius() const;    // return radius
  15. 15     double area() const;         // calculate area
  16. 16  protected:          // accessible to derived classes
  17. 17     double radius;   // radius of the Circle
  18. 18  };
  19. 19  
  20. 20  #endif
  21. 21  
  22. 22  
  23. 23  // Fig. 9.9: circle2.cpp
  24. 24  // Member function definitions for class Circle
  25. 25  #include <iostream.h>
  26. 26  #include <iomanip.h>
  27. 27  #include "circle2.h"
  28. 28  
  29. 29  // Constructor for Circle calls constructor for Point
  30. 30  // with a member initializer and initializes radius
  31. 31  Circle::Circle( double r, int a, int b )
  32. 32     : Point( a, b )       // call base-class constructor
  33. 33  { setRadius( r ); }
  34. 34  
  35. 35  // Set radius
  36. 36  void Circle::setRadius( double r ) 
  37. 37     { radius = ( r >= 0 ? r : 0 ); }
  38. 38  
  39. 39  // Get radius
  40. 40  double Circle::getRadius() const { return radius; }
  41. 41  
  42. 42  
  43. 43  // Calculate area of Circle
  44. 44  double Circle::area() const
  45. 45     { return 3.14159 * radius * radius; }
  46. 46  
  47. 47  // Output a circle in the form:
  48. 48  // Center = [x, y]; Radius = #.##
  49. 49  ostream &operator<<( ostream &output, const Circle &c )
  50. 50  {
  51. 51     output << "Center = " << static_cast< Point > ( c )
  52. 52            << "; Radius = " 
  53. 53            << setiosflags( ios::fixed | ios::showpoint )
  54. 54            << setprecision( 2 ) << c.radius;
  55. 55  
  56. 56     return output;   //  enables cascaded calls
  57. 57  }
  58. 58  
  59. 59  
  60. 60  // Fig. 9.9: fig09_09.cpp
  61. 61  // Driver for class Circle
  62. 62  #include <iostream.h>
  63. 63  #include "point2.h"
  64. 64  #include "circle2.h"
  65. 65  
  66. 66  int main()
  67. 67  {
  68. 68     Circle c( 2.5, 37, 43 );
  69. 69  
  70. 70     cout << "X coordinate is " << c.getX()
  71. 71          << "\nY coordinate is " << c.getY()
  72. 72          << "\nRadius is " << c.getRadius();
  73. 73  
  74. 74     c.setRadius( 4.25 );
  75. 75     c.setPoint( 2, 2 );
  76. 76     cout << "\n\nThe new location and radius of c are\n"
  77. 77          << c << "\nArea " << c.area() << '\n';
  78. 78  
  79. 79     Point &pRef = c;
  80. 80     cout << "\nCircle printed as a Point is: " << pRef << endl;
  81. 81  
  82. 82     return 0;
  83. 83  }
  84.